package com.dosen.api.third.party.cmp.model.vhostinfo;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * @version V1.0
 * @author: guangcheng
 * @date: 2023/1/13 10:40
 * @description:
 */
@NoArgsConstructor
@Data
@ToString
public class VHostToolsConfig {

    /**
     * power
     */
    @JSONField(name = "power")
    public PowerDTO power;
    /**
     * tools
     */
    @JSONField(name = "tools")
    public ToolsDTO tools;

    /**
     * PowerDTO
     */
    @NoArgsConstructor
    @Data
    @ToString
    public static class PowerDTO {
        /**
         * defaultPowerOffType
         */
        @JSONField(name = "defaultPowerOffType")
        public String defaultPowerOffType;
        /**
         * defaultResetType
         */
        @JSONField(name = "defaultResetType")
        public String defaultResetType;
        /**
         * defaultSuspendType
         */
        @JSONField(name = "defaultSuspendType")
        public String defaultSuspendType;
        /**
         * powerOffType
         */
        @JSONField(name = "powerOffType")
        public String powerOffType;
        /**
         * resetType
         */
        @JSONField(name = "resetType")
        public String resetType;
        /**
         * standbyAction
         */
        @JSONField(name = "standbyAction")
        public String standbyAction;
        /**
         * suspendType
         */
        @JSONField(name = "suspendType")
        public String suspendType;
    }

    /**
     * ToolsDTO
     */
    @NoArgsConstructor
    @Data
    @ToString
    public static class ToolsDTO {
        /**
         * afterPowerOn
         */
        @JSONField(name = "afterPowerOn")
        public Boolean afterPowerOn;
        /**
         * afterResume
         */
        @JSONField(name = "afterResume")
        public Boolean afterResume;
        /**
         * beforeGuestShutdown
         */
        @JSONField(name = "beforeGuestShutdown")
        public Boolean beforeGuestShutdown;
        /**
         * beforeGuestStandby
         */
        @JSONField(name = "beforeGuestStandby")
        public Boolean beforeGuestStandby;
        /**
         * lastInstallInfo
         */
        @JSONField(name = "lastInstallInfo")
        public LastInstallInfoDTO lastInstallInfo;
        /**
         * syncTimeWithHost
         */
        @JSONField(name = "syncTimeWithHost")
        public Boolean syncTimeWithHost;
        /**
         * toolsUpgradePolicy
         */
        @JSONField(name = "toolsUpgradePolicy")
        public String toolsUpgradePolicy;
        /**
         * toolsVersion
         */
        @JSONField(name = "toolsVersion")
        public Integer toolsVersion;

        /**
         * LastInstallInfoDTO
         */
        @NoArgsConstructor
        @Data
        @ToString
        public static class LastInstallInfoDTO {
            /**
             * counter
             */
            @JSONField(name = "counter")
            public Integer counter;
        }
    }
}

